<?php
namespace Core\CoreComponents\LogisticManager;

/**
* This interface provide all accessible methods on materials management module
*
* @method ServiceResponse getMaterials()
*/
interface IMaterials
{
	/**
	* Get all materials
	*
	* @return This response contains all materials
	*/
    public function getMaterials();
	
	/**
	* Get all material states
	*
	* @return ServiceResponse This response contains all states material
	*/
	public function getStates();
	
	/**
	* Add a material
	*
	* @param int $state The material state
	* @param string $name The material name
	* @param string $description The material description
	* @param User $affectedUser The affected user which have the material
	* @param string $location The material location
	*
	* @return This response contains the added material
	*/
    public function addMaterial($state, $name, $description, $affectedUser, $location);
	
	/**
	* Update a material
	*
	* @param int $id The material unique identifier to update
	* @param int $state The material state
	* @param string $name The material name
	* @param string $description The material description
	* @param User $affectedUser The affected user which have the material
	* @param string $location The material location
	*
	* @return This response contains the added material
	*/
    public function updateMaterial($id, $state, $name, $description, $affectedUser, $location);
	
	/**
	* Delete a material
	* 
	* @param integer $id The unique material identifier
	*
	* @return ServiceResponse This response contains the deleted material
	*/
	public function deleteMaterial($id);
}

?> 